# 使用*打印3*10的矩形
# **********
# **********
# **********
# 循环行
for n in range(3):
    # 循环每行中的*
    for i in range(10):
        print("*", end=" ")
    print()

# 打印三角形
# *
# ***
# *****
# *******
# *********
# 行数n      每行*个数i
# 1         1
# 2         3
# n         i=2*n-1
for n in range(1, 6):
    # 循环每行中的*
    for i in range(2 * n - 1):
        print("*", end="")
    print()
# 99乘法表
for n in range(1, 10):
    for i in range(1, n + 1):
        print(f"{n}*{i}={n * i}", end=" ")
    print()

# -----*
# ----***
# ---*****
# --*******
#  *********
# -*******
# --*****
# ---***
# ----*
for n in range(1, 5):
    for j in range(6 - n):
        print(" ", end="")
    for i in range(2 * n - 1):
        print("*", end="")
    print()
for n in range(1, 6):
    # 空格三角形
    for j in range(n):
        print(" ", end="")
    for i in range(11 - 2 * n):
        print("*", end="")
    print()

# A
# BB
# CCC
# DDDD
word = 65
for n in range(1, 5):
    for i in range(n):
        print(chr(word), end=" ")
    print()
    # 每一行打印完，更新字符
    word += 1
# A
# BC
# DEF
# GHIJ
word = 65
for n in range(1, 5):
    for i in range(n):
        print(chr(word), end=" ")
        # 每一个字符打印完，更新字符
        word += 1
    print()

# A
# AB
# ABC
# ABCD
for n in range(1, 5):
    # 每一行都从A开始
    word = 65
    for i in range(n):
        print(chr(word), end=" ")
        # 每一个字符打印完，更新字符
        word += 1
    print()
# ASCII
# 65
# 66 66
# 67 67 67
# ascii码：用128个数字表示了对应数量的字符(字母、标点、特殊符号)
# 65-A  97-a
# chr(ascii码)  对应的字符

# 打印10000以内的完数
# 完数、完美数
# 一个数的非自身因子之和等于它本身
# 6 = 1 + 2 + 3
# 28 = 1 2 4 7 14


# 获取因子
# 8%2==0   2
# 8%3!=0
# 8%4==0    4
# ...
# 8%7!=0
# 1 2 4
# 10000以内
# for num in range(1, 10001):
#     # 判断一个数是否是完数
#     sum = 0  # 因子和
#     # 获取所有可能的因子
#     for i in range(1, num):
#         if num % i == 0:  # 判断能否整除，如果能，就是一个因子
#             # 累加因子
#             sum += i
#     # 判断是否是完数
#     if sum == num:
#         print(num)

# 分解质因数
# 输入一个数，输出它的所有质因数
# 8 输出 2 2 2
# 18 输出 2 3 3
# 12  先用最小的质因数2尝试能否被整除  12%2?=0   得到2
# 用12//2 得到6后，继续用最小的质因数2尝试能否被整除  6%2?=0 得到2
# 用6//2  得到3后，继续用最小的质因数2尝试能否被整除  3%2?=0
# 2不行时，尝试用3整除   3%3?=0   得到3
# 用3//3  得到1  结束
num = int(input("请输入一个数"))
print(f"{num}的质因数为:")
i = 2
# 当前的数大于最小的质因数2时就不断拆解
while num > 1:
    # 尝试用每一个可能的质因数整除
    while num % i == 0:
        print(i, end=" ")
        # 更新数
        num //= i
    # 如果当前数不是因子，尝试用下一个数
    i += 1
